<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
<head>
    <meta charset="UTF-8"/>
    <link rel="shortcut icon" href="../public/favicon.ico" th:href="@{/favicon.ico}"/>

    <title>首页 . MyOIDC</title>

    <th:block th:include="fragment/header :: public-css"/>
</head>
<body>

<div th:replace="fragment/header :: public-header"/>

<div class="container">
    <h3>在开始OIDC之前, 您需要清楚一些OIDC术语
        <small>这与OAuth2有些区别</small>
    </h3>
    <ul>
        <li>
            <p>
                <strong class="text-primary">EU</strong> End User, 指用户(一般指有账号的个体)
            </p>
        </li>
        <li>
            <p>
                <strong class="text-primary">RP</strong> Relying Party, 信任方, 理解为OAuth2中的客户端(client)即可, 需要在OP中注册
            </p>
        </li>
        <li>
            <p>
                <strong class="text-primary">OP</strong> OpenID Provider, 能提供对EU进行认证的服务端(可理解为OAuth2中授权服务端),
                提供RP的注册(或管理)能力与EU管理
                <br/>
                <span class="text-muted">OIDC-Server 就是一个OP的参考实现</span>
            </p>
        </li>
        <li>
            <p>
                <code>id_token</code> JSON Web Token(<a
                    href="http://tools.ietf.org/html/draft-ietf-oauth-json-web-token" target="_blank">JWT</a>),
                包含EU认证授权信息等. 有关JWT请访问 <a
                    href="https://jwt.io/" target="_blank">https://jwt.io/</a>
                <br/>
                <span class="text-muted">除了JWT, 知道以下概念对掌握OIDC会很有帮助<br/>
                    JSON Web Key(<a href="https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41" target="_blank">JWK</a>),
                    JSON Web Encryption(<a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-encryption"
                                           target="_blank">JWE</a>),
                    JSON Web Algorithm(<a href="http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms"
                                          target="_blank">JWA</a>),
                    JSON Web Signature(<a href="https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-41"
                                          target="_blank">JWS</a>)</span>
            </p>
        </li>
        <li>
            <p>
                <strong>UserInfo Endpoint</strong> EU信息接口(OAuth2保护), 在RP获取到<code>access_token</code>后,可调用此接口获取EU的详细信息.
                OIDC要求此接口必须使用
                <small>https</small>
                访问(更安全)
                <br/>
                <span class="text-muted">OIDC-Server 的EU信息接口为 <em>/api/userinfo</em></span>
            </p>
        </li>
        <li>
            <p>
                <strong>Claim</strong> EU信息的载体, 可在<code>id_token</code>中获取
            </p>
        </li>
    </ul>

    <p>
        完整的OIDC术语介绍请访问 <a href="http://openid.net/specs/openid-connect-core-1_0.html#Terminology" target="_blank">http://openid.net/specs/openid-connect-core-1_0.html#Terminology</a>
    </p>

    <hr/>
    <h4>菜单</h4>
    <ul>
        <li>
            <p>
                <a th:href="@{'/MyOIDC_API-1.1.0.html'}" target="_blank">API</a> <span
                    class="text-muted">- 查看提供的API文档</span>
            </p>
        </li>
        <li sec:authorize="hasRole('ROLE_ADMIN')">
            <p>
                <a th:href="@{'/admin/user/list'}">用户[EU]</a> <span class="text-muted">- 管理用户[EU] (也指账号)</span>
            </p>
        </li>
        <li sec:authorize="hasRole('ROLE_ADMIN')">
            <p>
                <a th:href="@{'/admin/rp/list'}">客户端[RP]</a> <span
                    class="text-muted">- 管理客户端[RP] (client_details)</span>
            </p>
        </li>
        <li>
            <p>
                <a th:href="@{'/public/registration'}">注册客户端[RP]</a> <span class="text-muted">- 若需要可提供对外注册客户端[RP] (这是可选的, 不需要授权也能访问)</span>
            </p>
        </li>
        <li>
            <p>
                <a th:href="@{'/unity/dashboard'}">Unity</a> <span class="text-muted">- Unity 资源(resource), 需要具有 [ROLE_UNITY] 权限的<code>access_token</code>才能访问</span>
            </p>
        </li>
        <li>
            <p>
                <a th:href="@{'/m/dashboard'}">Mobile</a> <span class="text-muted">- Mobile资源(resource), 需要具有 [ROLE_MOBILE] 权限的<code>access_token</code>才能访问</span>
            </p>
        </li>
    </ul>
    <br/>

    <div class="well well-sm">
        <p>
            <strong>说明</strong>: Unity与Mobile菜单需要先授权获取到<code>access_token</code>后才能正常访问;
            可以尝试在URL后面任意添加access_token参数值试试效果,
            <br/>
            如: <span th:text="${host + 'm/dashboard?access_token=i_am_testing_access_token'}"></span>
        </p>

        <p>
            请求受保护的资源时传递<code>access_token</code>参数有两种方式, 具体请访问 <a href="http://andaily.com/blog/?p=500" target="_blank">http://andaily.com/blog/?p=500</a>
        </p>
    </div>
</div>


<hr/>
<div th:replace="fragment/footer :: footer-oidc"/>
</body>
</html>